package servlets;

import dao.DrugDAO;
import to.Drug;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Collection;

/**
 * Сервлет, используемый для отображения запрашиваемой таблицы
 *
 * @author Andrey Murgo
 */
public class ViewController extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //Определение текущей страницы и количества записей на странице
        int page = 1;  //страница по умолчанию
        int recordsPerPage;
        try {
            recordsPerPage = Integer.parseInt(getServletContext().getInitParameter("recordsPerPage"));
        } catch (NumberFormatException e) {
            recordsPerPage = 10;
        }
        if (req.getParameter("page") != null) {
            try {
                page = Integer.parseInt(req.getParameter("page"));
            } catch (NumberFormatException e) {
                //Будет использованно значение по умолчанию
            }
        }// else -  значение по умолчанию

        //Обращение к модели
        DrugDAO dao = new DrugDAO();
        DrugDAO.DrugParam param = (DrugDAO.DrugParam) req.getAttribute("searchParam");
        int offset = (page - 1) * recordsPerPage;
        Collection<Drug> drugsCollection = dao.getDrugs(offset, recordsPerPage, param);
        int noOfRecords = dao.getNumberOfRecordsTotal();
        int noOfPages = (int) Math.ceil(noOfRecords * 1.0 / recordsPerPage);

        req.setAttribute("drugsCollection", drugsCollection);
        req.setAttribute("noOfPages", noOfPages);
        req.setAttribute("noOfRecords", noOfRecords);
        req.setAttribute("currentPage", page);
        req.getRequestDispatcher("tableview.jsp").forward(req, resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req, resp);
    }
}

